/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package acceso.util;

import wf.dto.pbtwtaut_enviado;
import wf.dto.tbtwtaut;
import wf.dto.tccuenta;
import acceso.hibernate.AccesoHibernate;
import org.hibernate.Query;
import org.hibernate.StatelessSession;
import org.hibernate.Transaction;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;

/**
 *
 * @author romulogalindo
 */
class OTwitter{
    Twitter twitter;
    tccuenta cuenta;
    int id = 0;
    boolean conectado=false;
    public OTwitter(tccuenta cuenta) {
        this.cuenta = cuenta;
        this.id = cuenta.getCo_cuenta();
        conectar(this.cuenta.getNo_clave1(), this.cuenta.getNo_clave2(), this.cuenta.getNo_clave3(), this.cuenta.getNo_clave4());
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
    public void reconectar(){
        conectar(this.cuenta.getNo_clave1(), this.cuenta.getNo_clave2(), this.cuenta.getNo_clave3(), this.cuenta.getNo_clave4());
    }
    public void reconectar(tccuenta cuenta){
        conectar(cuenta.getNo_clave1(), cuenta.getNo_clave2(), cuenta.getNo_clave3(), cuenta.getNo_clave4());
    }
    
    public void conectar(String p1,String p2, String p3, String p4){
        try{
            twitter = new TwitterFactory().getInstance();

//            twitter.setOAuthConsumer("hXxBeUdQ3ftKOhQ19s609A", "ktqBzAbr7A5YKXdbE3ARKGUCNEDqM4oJfpdkAN2C81w");
            twitter.setOAuthConsumer(p1, p2);

//            AccessToken accessToken = new AccessToken("54093698-rXBeAJIyx7mGZp7vhLmzSCEGvLZrlFiZh4MEKXjos","757jU5Z4o5vTGK3Gkmubv7w6Cp3oHUe3Ol9iKjyIc");
            AccessToken accessToken = new AccessToken(p3,p4);

            twitter.setOAuthAccessToken(accessToken);
        
        
            twitter.getScreenName();
            //System.out.println("Logeo completado satisfactoriamente.");
            conectado = true;
        }catch(Exception ep){
            System.out.println("No se logro conectar.\n"+ep.getMessage());
            conectado = false;
        }
    }
    public void publicar(tbtwtaut twt){
        System.out.println("publicando mensaje:"+twt.getNo_mensaj());
        String retorno = "";
        if(twt.getNo_mensaj() != null){
            try{
                //System.out.println(""+twitter.getId());
                Status status = twitter.updateStatus(twt.getNo_mensaj());
                
                StatelessSession HSESSION=AccesoHibernate.getSessionFactory().openStatelessSession();
//                Transaction TRANSAX = HSESSION.beginTransaction();
//                TRANSAX.begin();
                Query q = HSESSION.getNamedQuery("twtaut.pbtwtaut_enviado");
                q.setInteger("id_twtaut", twt.getId_twtaut());

                pbtwtaut_enviado cuenta = (pbtwtaut_enviado) q.uniqueResult();

                //System.out.println(">"+twt.getNo_mensaj()+"|"+twt.getCo_cuenta()+"|"+twt.getId_twtaut()+"::"+cuenta.getCo_cuenta());
//                TRANSAX.commit();
                HSESSION.close();
                System.out.println("Mensaje enviado correctamente:"+q.getQueryString().replaceAll(":id_twtaut", ""+twt.getId_twtaut()));
                //retorno = "OK";
            }catch(Exception ep){
                System.out.println("Error cambiando de estado al mensaje:\n"+ep.getMessage());
                //retorno = ep.getMessage();
            }
        }
    }

    public boolean isConectado() {
        return conectado;
    }

    public void setConectado(boolean conectado) {
        this.conectado = conectado;
    }
    
    
}
